package cn.com.sassali.dynamic;

import cn.com.sassali.service.IUserService;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/**
 * @ClassName JdkInvocationHandler
 * @Description     服务调用handler 后面需要通过 Proxy.newProxyInstance 生成代理
 * @Author lujiansen
 * @date 2020/4/26 2:06 下午
 */
public class JdkInvocationHandler implements InvocationHandler {

    private IUserService userService;

    // 通过反射的方式调用被代理类的方法，可以在方法执行前或后进行别的处理
    // @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("开始JDK动态代理 ===== ");
        Object rlt = method.invoke(userService, args);
        System.out.println("结束JDK动态代理 ===== ");
        return rlt;
    }

    public JdkInvocationHandler(IUserService userService) {
        this.userService = userService;
    }

}
